Meta Data Management for Media Content Objects

ABSTRACT

Meta data associated with multiple pieces of content (e.g., songs, movies, other audio/video clips, etc.) stored on multiple pieces of media (e.g., CDs, DVDs, etc.) is maintained in a meta data store. The meta data store also includes meta data associated with other pieces of content stored elsewhere, such as songs stored in files on a local hard drive that have been ripped from a CD or DVD. These other pieces of content are associated with the content on the pieces of media, such as being ripped versions of the same song tracks. This association is maintained in the meta data store, so that whenever a change is made to meta data for one piece of content (e.g., for a track on a CD), then the meta data for the associated piece(s) is also changed (e.g., the ripped version stored in a file on the hard drive).

RELATED APPLICATION

This application is a continuation of and claims priority to U.S. patentapplication Ser. No. 09/820,088, filed on Mar. 27, 2001, the disclosureof which is incorporated by reference herein.

TECHNICAL FIELD

This invention relates to data structures and data management, and moreparticularly to meta data management for media content objects.

BACKGROUND

Computers are becoming increasingly more powerful while at the same timebecoming less costly. This has resulted in the promulgation of computersinto many homes and business throughout the world. Along with thisincrease in computing performance and popularity has also come anincrease in the number of areas in which computers are used. Where oncecomputers were used primarily for productivity-based applications (e.g.,databases, word processing, spreadsheets, and so forth), a wide range ofentertainment applications have become increasingly popular.

One such entertainment application is that of media content playback,such as audio (e.g., songs) and audio/video (e.g., movies) playback. Forexample, computers are often equipped with a CDROM drive that allows thecomputer to read an audio CD and play the songs on the CD via one ormore speakers coupled to the computer. An additional feature that suchan entertainment application may provide is the ability to obtaininformation about a CD (e.g., track names and artist name(s)). Thisinformation is commonly referred to as “meta data” corresponding to theCD. The application accesses a database of meta data (e.g., from aremote server) to identify information about the CD (e.g., track namesand artist name(s)), and then displays this information to the user.

In addition to playing back media content directly from the source CD,some applications also allow songs to be copied from the source CD andstored as separate files on a local hard drive of the computer, such asin an MP3 or WMA format. This process is commonly referred to as“ripping”. These locally stored files can then be played back at asubsequent time directly from the local hard drive without the presenceof the source CD in the CDROM drive.

One current problem with these systems, however, is that meta data istypically associated with only one source (e.g., the source CD). Thus,if the user plays back a song directly from a CD, then the meta datacorresponding to that CD is displayed to the user. Similarly, if theuser rips that same song to a file on the local hard drive and playsthat song back from the file on the hard drive, then the meta datacorresponding to that file is displayed to the user. However, anychanges made (e.g., by the user) to the meta data corresponding to theCD are displayed to the user only when the song is played back directlyfrom the CD, and any changes made to the meta data corresponding to thefile are displayed to the user only when the song is played back fromthe file. Thus, multiple different sets of meta data are created (onefor each source) for each song, requiring any changes to the meta datafor a song to be made to each of the multiple sets. This creates aninconsistent and unfriendly user experience.

The invention addresses these problems and provides solutions to improvemeta data management for media content objects.

SUMMARY

Improved meta data management for media content objects is describedherein.

According to one aspect of the improved meta data management, meta dataassociated with multiple pieces of content (e.g., songs, movies, otheraudio/video clips, etc.) stored on multiple pieces of media (e.g., CDs,DVDs, etc.) is maintained in a meta data store. The meta data store alsoincludes meta data associated with other pieces of content storedelsewhere, such as songs stored in files on a local hard drive that havebeen ripped from a CD or DVD. These other pieces of content areassociated with the content on the pieces of media, such as being rippedversions of the same song tracks. This association is maintained in themeta data store, so that whenever a change is made to meta data for onepiece of content (e.g., for a track on a CD), then the meta data for theassociated piece(s) is also changed (e.g., the ripped version stored ina file on the hard drive).

According to another aspect of the improved meta data management, metadata is organized using a disc-centric tree structure, with a discobject being a root object in the tree and multiple children objects(e.g., corresponding to tracks, files, play lists, and so forth)spawning from the disc object. These children can also have their ownchildren object (e.g., file objects). Meta data is maintained for all ofthese objects, and any changes to the meta data can be readilypropagated through the tree to other objects corresponding to the samedisc object (the root object).

According to another aspect of the improved meta data management, metadata is maintained for both generally available media and user-createdmedia. Meta data for generally available media (e.g., commerciallyavailable CDs or DVDs) can be obtained from a remote server. Foruser-created media, the computer creating the media has access to themeta data associated with the content of the new media (e.g., songscopied from another CD for which meta data is already available). Thecomputer generates a disc identifier for the user-created media and, foreach piece of content on the new media, copies the meta data for thatcontent from the meta data associated with the source of the content(e.g., for a song copied from a CD, the meta data associated with thatsong corresponding to that CD).

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example and notlimitation in the figures of the accompanying drawings. The same numbersare used throughout the figures to reference like components and/orfeatures.

FIG. 1 is a block diagram illustrating an exemplary network environment.

FIG. 2 illustrates an exemplary tree structure of media content objectsassociated with particular media.

FIG. 3 illustrates an exemplary database that implements the treestructure of FIG. 2.

FIG. 4 illustrates an exemplary return of meta data from a meta dataserver.

FIG. 5 is a flowchart illustrating an exemplary process for renderingmedia content meta data.

FIG. 6 is a flowchart illustrating an exemplary process for updatingmedia content meta data.

FIG. 7 is a flowchart illustrating an exemplary process for generatingmeta data for new media.

FIG. 8 illustrates a general exemplary computer environment which can beused to implement the improved meta data management.

DETAILED DESCRIPTION

FIG. 1 is a block diagram illustrating an exemplary network environment100. Environment 100 includes a client computer 102, remote servercomputers 104 and 106, and a network 108. Network 108 represents any ofa wide variety of conventional data communications networks. Network 108may include public portions (e.g., the Internet) as well as privateportions (e.g., an internal corporate Local Area Network (LAN) or a homenetwork), as well as combinations of public and private portions.Network 108 may be implemented using any one or more of a wide varietyof conventional communications media including both wired and wirelessmedia. Any of a wide variety of communications protocols can be used tocommunicate data via network 108, including both public and proprietaryprotocols. Examples of such protocols include TCP/IP, IPX/SPX, NetBEUI,etc.

Computers 102, 104, and 106 represent any of a wide range of computingdevices, and each device may be the same or different. By way ofexample, devices 102-106 may be desktop computers, multiple-processorfileservers or workstations, laptop computers, handheld or pocketcomputers, personal digital assistants (PDAs), cellular phones, Internetappliances, consumer electronics devices, gaming consoles, and so forth.

Client computer 102 includes a local hard drive 110, a system memory(Random Access Memory (RAM)) 112, a disc drive 114 for removable media116, and a central processing unit (CPU) 118. CPU 118 executes anoperating system 120, which manages operation of client computer 102 andprovides support for input/output operations (e.g., user inputs, audioand/or video input and playback, data communications with othercomputers via network 108, and so forth). CPU 118 also executes acontent player application 122 from memory 112. Content playerapplication 122 provides a user interface allowing a user of computer102 to select various pieces of media content (also referred to assimply “content”) for playback. Content player application 122 alsocommunicates audio data to speakers of computer 102 (optionally viaoperating system 120) for playing to the user, as well as communicatesvideo data to a display device of computer 102 for playback of videodata. Additionally, content player application 122 may also present(e.g., display) to the user meta data corresponding to content beingplayed. This meta data is information describing different aspects orcharacteristics of the content being played, and/or information relatedto the content being played. A meta data manager component 124 ofcontent player application 122 manages the storage and modification ofmeta data, as discussed in more detail below. Although illustrated asseparate components, content player 122 and operating system 120 mayalternatively be incorporated into the same component (e.g., contentplayer 122 may be one of multiple modules of operating system 120).

Content player application 122 can play pieces of content directly frommedia 116 inserted into disc drive 114. A piece of content as usedherein refers to a segment of data that can be played (e.g., to a useron a computer). The exact nature of a piece of content on media 116 isdependent on the type of media as well as the type of content. Forexample, for an audio CD, each track of audio data (typically a singlesong) would be a piece of data. For a movie DVD, the entire movie may beone piece of content, a set of outtakes another piece of content, and amovie preview a third piece of content.

Media 116 can be any of a wide variety of conventional media. As usedherein, media 116 is discussed primarily with reference to being acompact disc (CD) or digital versatile disc (DVD), including CDs andDVDs that are read only, rewriteable, or recordable. Alternatively othertypes of media can be used, such as other types of optical discs,magnetic disks, magnetic tapes, solid state storage devices, and soforth. It is to be appreciated that the nature of drive 114 also variesbased on the type of media 116 being used (e.g., an optical disc drive,a magnetic tape drive, and so forth).

Additionally, client 102 may access other media in a manner analogous toaccessing media 116. For example, media 116 may be inserted into a discdrive of another computer (or CD “jukebox”) and accessed by client 102via network 108. By way of another example, an Internet radio stationmay make tracks of data, analogous to tracks of data on a CD, accessibleto client 102.

In addition to being used as a direct source for content playback, media116 may be used as the source for content that is stored as one or morefiles on hard drive 110. Content player application 122 can manage thecopying (ripping) of content from media 116 to a file 126 of hard drive110, or alternatively another component such as operating system 120 ora component on another computer (not shown) may manage the copying. Eachof these ripped files is another version of the corresponding piece ofcontent form media 116. Each of the content files 126 typically stores asingle piece of content, and may use any of a wide variety of publicand/or proprietary formats, such as MPEG Audio Layer 3 (MP3), WindowsMedia audio file (WMA), and so forth.

During operation, meta data manager 124 maintains a record (explicitlyor implicitly) of different media pieces 116, such as different CDs,that are inserted into disk drive 114. When coupled to network 108, metadata manager 124 communicates with server 104 and/or 106 to retrievemeta data corresponding to the different media 116 that has beeninserted into disc drive 114. Meta data manager 124 stores this receivedmeta data locally (e.g., as local meta data store 128 on hard drive 110)for subsequent use by content player application 122.

Content player application 122, including meta data manager 124,provides an enhanced content playback experience by presenting, to theuser, meta data corresponding to various pieces of content. The metadata can be displayed while the content is being played, as well as atother times (e.g., allowing the user to look back through content thathe or she has previously played). Meta data manager 124 obtains (fromserver 104 and/or 106) meta data for each piece of content (e.g., eachsong) on a particular piece of media (e.g., each CD) that has beeninserted into disc drive 114. This meta data is obtained even though theuser may not have actually played the corresponding content—the mereinsertion of the media is sufficient. In the illustrated example metadata manager 124 obtains only the meta data for pieces of media it isaware of (e.g., those that have been inserted into disc drive 114).Alternatively, other meta data may also be obtained and stored in localmeta data store 128. For example, a user may identify a preferred artistand all meta data available for all of that artist's CDs may be obtainedand stored in local meta data store 128.

Meta data manager 124 associates meta data with the particular pieces ofremovable media 116 and further associates all pieces of content (e.g.,songs, movies, and so forth) that are on or originate from particularmedia 116 with that particular media 116. Thus, meta data for aparticular song from a particular disc is associated with that song,regardless of whether it is played to the user directly from media 116or from one of content files 126 that was ripped from media 116.

In the illustrated example, the meta data is stored at servers 104 and106 and is available from a “disc-centric” point of view. This“disc-centric” point of view organizes meta data on a per-disc basis,with tracks on that disc and files ripped from those trackscorresponding to the particular disc. A disc identifier is used fortracking the meta data for the disc. In the case of CDs, CDs typicallystore songs as different tracks on the CD, and each track is made up ofmultiple “frames” of audio data. In one implementation, each frame ofaudio data is 1/75 of a second. Typical audio CDs store table ofcontents (TOC) information, which refers to: the total number of trackson the disc, the starting frame offset of each track, and the totalnumber of frames on the disc. The disc identifier is generated bysumming together this table of contents information (the total number oftracks on the disc, the starting frame offset of each track, and thetotal number of frames on the disc). It should be noted that generatinga disc identifier in this fashion does not guarantee that each discidentifier is unique. However, it does provide an almost-unique value(that is, it is possible for two different CDs to have the same discidentifier, but highly unlikely).

Alternatively, the disc identifier may be generated in different mannersfor CDs, as well as different manners for different types of media. Forexample, a disc identifier for a DVD may be generated based on a CRC 64(64-bit Cyclical Redundancy Checking) of portions of the DVD. In oneimplementation, these portions are the first parts (e.g., 64 Kb) of thevideo_ts.ifo and the vts_(—)01_(—)0.ifo on a DVD disc.

When meta data manager 124 desires meta data for a particular disc,manager 124 communicates the disc identifier to one of servers 104 and106. The receiving server 104 or 106 uses the disc identifier as anindex into the meta data stored at the server. If the disc identifiermatches a disc identifier at the server, then the meta data associatedwith that matching server is returned to meta data manager 124.

Servers 104 and 106 can store public and/or private meta data. Publicmeta data refers to data that is generally available to the public as awhole (although possibly subject to licensing fees or otherrestrictions). Private meta data refers to data that is intended foronly a particular one or more users. For example, a user may generatehis or her own meta data and communicate it to a server as private metadata. Subsequent accesses to the server by the user (the identity ofwhich can be verified in any of a variety of conventional manners, suchas a user name and password) allow this meta data to be received. Bystoring such private meta data on a server, a user can generate his orher own data and have that data “follow” him or her to differentlocations. For example, a user may generate private meta data from hisor her home computer and store it on a remote server. The user can thenaccess that server from another location (e.g., his or her portableaudio device, an Auto PC, and so forth) and have that previouslygenerated private data available at the other location. Thus, if theuser generates special meta data for a CD on his or her home computer,when the user inserts the CD into his or her Auto PC, the same specialmeta data can be retrieved from the server and rendered by the Auto PC.

Content player 122 maintains a tree-structure of objects associated withparticular media 116. In the illustrated examples, this tree-structureis a “disc-centric” structure placing a disc identifier as the root nodeand then one or more levels of children depending from the root node.

FIG. 2 illustrates an exemplary tree structure 148 of media contentobjects associated with particular media. Each object in tree structure148 can have meta data associated with it. Two root node objects 150 and152 are illustrated, each corresponding to a particular optical disc.Root object 150 has three children objects 154, 156, and 158, each ofwhich is one track on the disc corresponding to object 150.Additionally, track object 154 has two children 160 and 162, each ofwhich is a file that has been ripped to a local hard drive, and each ofwhich is a ripped version of the track corresponding to track object154. Furthermore, track object 158 has one child 164, which is a filethat is stored on the local hard drive and is a ripped version of thetrack corresponding to track object 158. The track corresponding totrack object 156 has not been ripped to any files on the local harddrive, and thus track object 156 does not have any children.

Similarly, two track objects 166 and 168 are child objects from rootdisc object 152. Track object 166 has a file child object 170, whiletrack object 168 has no children.

The tree structure of FIG. 2 allows meta data manager 124 to readilypropagate meta data, as well as changes to meta data, through thevarious objects associated with a particular disc (or other media). Forexample, if a user desired to correct a typographical error thatoccurred in the name of a song corresponding to track 154, given therelationships identified in FIG. 2 the association of ripped fileobjects 160 and 162 to track object 154 can be readily identified, andthe correction also made in the name of the song corresponding to eachof the ripped file objects 160 and 162.

The discussions herein refer primarily to a disc-centric point of viewas illustrated in FIG. 2. Alternatively, the database may be structuredfrom other view points. For example, rather than the disc object as aroot node there may be an “anthology” object as the root node, with eachof the disc objects 150 and 152 being children of the anthology object.An anthology may include, for example, a set of multiple CDscorresponding to the same artist, genre, time period, etc. In thissituation, any meta data changes can be propagated across multiple CDs(e.g., a performance date for the anthology may be changed and thischange propagated to each CD in that anthology). By way of additionalexamples, other points of view may have artist names as root nodes,genres as root nodes, and so forth.

Additionally, it should be noted that even though a disc-centric pointof view is used, an object can be a child of objects that are (or leadto) two different root node objects. For example, as discussed in moredetail below, a new CD may be created by a user that includes tracksfrom another source CD. In this situation, the track objects can belinked to parent root node objects that are the root nodes for both thenew CD as well as the source CD.

The tree structure of FIG. 2 can be implemented using any of a widevariety of data structures.

FIG. 3 illustrates an exemplary database 200 that implements the treestructure of FIG. 2. Database 200 is illustrated including an objecttable 202, a relationships table 204, and a properties table 206. Objecttable 202 identifies multiple objects in database 200, relationshipstable 204 maintains a mapping of objects to each other in a specificorder, and properties table 206 maintains a set of properties (metadata) for objects in database 200. FIG. 3 illustrates database 200populated with example data for purposes of explanation.

Object table 202 identifies the objects that are in database 200. Asused herein, an object refers to an entity that can have “children”(that is, one or more other related objects) and properties associatedwith it. For example, an object may be a disc, a track on a disc, a fileripped from a track on a disc, a play list identifying multiple tracksand/or files, an artist (corresponding to a disc, a track, a file,etc.), a genre (corresponding to a disc, a track, a file, etc.), and soforth. In the illustrated example of FIG. 3, several different objectsare identified.

Object table 202 includes two fields: a type field and an ID field. Foreach entry in object table 202, the type field identifies what type ofobject is described in the entry and the ID field identifies a uniqueidentifier (unique within database 200) of the object. In oneimplementation, the type field includes a globally unique ID thatcorresponds to the type of object described in the entry. The ID for anobject is used to identify the object in the relationships table 204 andproperties table 206. The ID for each object can be assigned in any of awide variety of manners, and in the illustrated example each object isassigned an ID that is the order the object is entered into object table202 relative to the other objects in the table. In the illustratedexample of FIG. 3, a CD is assigned the ID of “1”, three CD tracks areassigned the ID's of “2”, “3”, and “4”, respectively, a file is assignedthe ID of “5”, and so forth.

Additional fields may also optionally be included in object table 202.For example, a “description” field may be adding allowing informationdescribing the entry to be included (e.g., a brief description of whatobject the globally unique ID refers to, such as “compact disc”).

Relationships table 204 identifies relationships between differentobjects in database 200. Each entry in relationships table 204identifies a parent/child relationship between two objects identified inobject table 202. Relationships table 204 includes four fields: a parentfield, a child field, a type field, and an order field. The parent fieldidentifies one of the objects in object table 202 by its ID, while thechild field identifies another of the objects in object table 202 by itsID. The parent and child fields identify a parent/child relationshipbetween these two identified IDs. For example, the first entry inrelationships table 204 indicates that the object with an ID of 2 is achild of the object with an ID of 1. Thus, in conjunction with objecttable 202, this first entry indicates that the track with an ID of 2 isa child of the CD with an ID of 1 (in other words, the track with an IDof 2 is a track on the CD with an ID of 1).

The type field in relationships table 204 indicates what type of objectthe object referenced in the child field of the entry is. For example,the first entry indicates that the object with an ID of 2 is a trackobject. This is a duplicate of the information stored in object table202, and is included to increase efficiency in accessing database 200.For example, to identify all of the tracks with the same parent, asearch can be performed based on the parent and type fields ofrelationships table 204. Alternatively, the type field may not beincluded in relationships table 204.

The order field in relationships table 204 identifies the order in whicheach entry for each parent object is added to relationships table 204.The first relationship entered in table 204 for a particular parentobject has an order of “1”, the second has an order of “2”, and soforth.

Additional fields may also optionally be included in relationships table204. For example, an additional type field may be included thatindicates what type of object the object referenced in the parent fieldof the entry is. By way of another example, a User ID field may beincluded that identifies which user inserted the CD that resulted in therelationship for that entry. The User ID field may be used, for example,to allow meta data for multiple different users to be stored in the samedatabase 200, but also allow a particular user to access only the metadata that corresponds to discs he or she inserts into the disc drive.

Properties table 206 stores meta data for the objects identified inobject table 202. Properties table 206 includes four fields: an IDfield, a property (prop) ID field, a “modified by” field, and a valuefield. For each entry, the ID field identifies one of the objects inobject table 202 by its ID. The property ID field for the entryidentifies a particular property that the entry corresponds to. Multiplepieces of meta data can be associated with an object (e.g., the title ofa CD, the artist of a CD, a performance date, and so forth). Multipleproperty ID values are established that uniquely identify the differentpossible pieces of meta data, and for each entry the property ID fieldincludes one of those ID values.

The “modified by” field identifies the source of the meta data for theentry. The modified by field may indicate a particular service that isthe source of the meta data (e.g., one of servers 104 or 106 of FIG. 1),or alternatively that the user is the source of the meta data. The valuefield identifies the meta data for the entry. Any of a variety of metadata can be stored in the value field, and optionally may be modified bythe user. For example, properties table 206 indicates that the objecthaving an ID of 3 (which is a CD track) has a user-set value of “1812Overture”.

Although illustrated as a single field, the value field may optionallybe multiple data-dependent fields (e.g., a numeric value field, a textvalue field, a date value field, and a binary value field).

The meta data illustrated in database 200 can be received from a remoteserver, such as server 104 or 106 of FIG. 1. This meta data can bereturned to the client computer implementing database 200 in any of awide variety of formats. FIG. 4 illustrates an exemplary return of metadata from a meta data server. The meta data 220 illustrated in FIG. 4 isreturned in an extensible markup language (xml) format. Alternatively,other public and/or proprietary formats can be used. As illustrated,meta data 220 indicates that the name of the disc is “Billboard TopHits: 1983”, the author is “Various Artists”, the release date for thedisc is “1992”, the genre of the disc is “rock”, the style of the discis “Pop/Rock”, and the rating of the disc is “8”. Additionally, there isno copyright information in meta data 200 for the disc, indicating thatthe remote server does not have the copyright meta data for the disc.Additionally, the tracks of the disc are identified in meta data 220 inorder, so the first track on the disc has the name “Africa” and theauthor “Toto”, the second track on the disc has the name “Stray CatStrut” and the author “Stray Cats”, and so forth.

Returning to FIG. 3, the various tables in database 200 allow changes tothe meta data in the database to be automatically propagated to otherrelated objects. For example, assume that the meta data received from aserver 104 or 106 of FIG. 1 for the object having an ID of 3 (a CDtrack) indicates that the title is “Tchaikovsky: 1812 Overture”. Furtherassume that the user changes the title for that track to be simply “1812Overture”. The meta data manager then checks relationships table 204,which indicates that the object having an ID of 3 has a child with an IDof 5 (a file, as indicated in object table 202). The meta data managerthus also changes the title data, in properties table 206, for theobject having an ID of 5 to be the new title. Thus, regardless ofwhether the user subsequently selects playback of Tchaikovsky's 1812Overture from the CD or the file, the meta data stored in database 200indicates that the title is simply “1812 Overture”.

Additional fields may also optionally be included in properties table206. For example, a type field may be included (analogous to the typefield in relationships table 204) that identifies what type of objectthe object referenced in the ID field is. By way of another example,properties for particular objects may be organized into differentproperty sets, such as pre-defined properties and user-definedproperties. In this situation, an additional field may be included inproperties table 206 that identifies which property set the entry refersto.

In addition to tables 202, 204, and 206, one or more additional tablesmay optionally be included in database 200. In one implementation, theseadditional tables include a property set types table, a property typestable, a users table, and an object values table. Each entry in theproperty set types table identifies a globally unique ID for a propertyset, a corresponding ID for that property set, and a description of thatproperty set. Each entry in the property types table identifies one ofthe property set ID's from the property set types table, a numberassociated with the property ID, a data type associated with theproperty (e.g., a numeric value, a text value, a date value, or a binaryvalue), and a description of the property. Each entry in the users tableidentifies a user ID and corresponding user name of the computer onwhich database 200 is implemented. Each entry in the object values tableidentifies an object ID from object table 202, an instance number of theobject in the object values table, and optionally an identification ofthe user that created the object (e.g., a sequential ID based on theuser's logon name).

Exemplary objects and properties are illustrated in FIG. 3, although awide range of objects and associated properties may be included indatabase 200. The following tables illustrate an exemplary set ofobjects and the properties that may be associated with those objects inaccordance with certain implementations. Additionally, the attachedAppendix identifies a set of interfaces and functions that can be usedin accordance with certain implementations to create, manage, and modifydifferent schemes (e.g., different databases 200 of FIG. 3), and objectswithin those schemes.

Object Types Object Name Description Genre The genre or category of thecontent. CDGenre The genre or category of a CD. CDArtist The artist of aCD. CDAlbum A CD album. Artist The artist of content. UserCollection Auser-defined collection of content. Album An album. AlbumTrack A trackof an album. AlbumPlaylist A play list for an album. Playlist A playlist of content. PlaylistFromAlbum A play list of ripped tracksassociated with an album. Track A track of content on media. Batch Alist of disc(s) for which meta data has not been downloaded yet(allowing for batch processing of downloads when network connection ismade). Link A URL reference and friendly name about an object. Forexample, “More about Sting” would be a friendly name and the URLreference would be “http://....sting.com”. Picture An imagecorresponding to content. ChildListEntry A list of the children tracksin a play list. DVD A DVD. DVDTitle The title of a DVD. DVDChapter Achapter of a DVD. Factoid One or more facts or comments associated withan album or content. Different factoids may be tied to different framesor other segments of the album or content.

Genre Object Property Name Description Name The name of the genre.NumMediaChildren The total number of children of the object that aremedia content. NumAudioMediaChildren The total number of children of theobject that are audio media content. NumVideoMediaChildren The totalnumber of children of the object that are video media content.

CDGenre Object Property Name Description Name The name of the genre orcategory of a CD.

CDArtist Object Property Name Description Name The name of an artist ofa CD. Role The role of an artist of a CD (e.g., lead singer, backupsinger, keyboard, etc.).

CDAlbum Object Property Name Description Title The title of the CD.Copyright Copyright information for the CD. Label The recording companylabel that produces the CD. ReleaseDate The date of release of the CD.Rating A rating for the CD. RatingOrg An organization that rated the CD.CDID A hashed value of the disc identifier, allowing for faster lookups.TOC The disc identifier (based on the table of contents information) forthe CD. LastPlayed The last time a track of the CD was played on thecomputer. Artist The artist of the CD. Genre The genre or category ofthe CD. NumMediaChildren The total number of children of the object thatare media content. NumAudioMediaChildren The total number of children ofthe object that are audio media content. NumVideoMediaChildren The totalnumber of children of the object that are video media content.

Artist Object Property Name Description Name The name of an artist of aCD. Role The role of an artist of a CD (e.g., lead singer, backupsinger, keyboard, etc.). NumMediaChildren The total number of childrenof the object that are media content. NumAudioMediaChildren The totalnumber of children of the object that are audio media content.NumVideoMediaChildren The total number of children of the object thatare video media content.

UserCollection Object Property Name Description Name The name of theuser-defined collection of content.

Album Object Property Name Description Title The title of the album.Copyright Copyright information for the album. Label The recordingcompany label that produces the album. ReleaseDate The date of releaseof the album. Rating A rating for the album. RatingOrg An organizationthat rated the album. CDID A hashed value of the disc identifier for thealbum, allowing for faster lookups. TOC The disc identifier (based onthe table of contents information) for the album. LastPlayed The lasttime content from the album was played on the computer. Artist Theartist of the album. Genre The genre or category of the album.NumMediaChildren The total number of children of the object that aremedia content. NumAudioMediaChildren The total number of children of theobject that are audio media content. NumVideoMediaChildren The totalnumber of children of the object that are video media content.

Album Track Object Property Name Description Title The title of a trackof the album. Lyrics The lyrics for the content of the track.LengthInMilliseconds The length of the track (in milliseconds).LastPlayed The last time the track was played on the computer. Album Thename of the album the track is on. Artist The artist of the track. GenreThe genre or category of the track. OriginalIndex The original positionof the track on the album it came from. RipFilename The name of a fileripped from the track. Enabled Whether the track is marked as “playable”on the album. Non-enabled tracks appear “grayed out” in the userinterface and are skipped over rather than played when the album isplayed. TOC The disc identifier (based on the table of contentsinformation) of the original CD the track was on. PlayCount The numberof times the track has been played on the computer. LastEditedBy Anidentification of the last entity (either the name of the meta dataprovider or “user”) to edit any property associated with the object.Provider The name of the original meta data provider. Composer Thecomposer of the album. CoverArtSmall A small graphic of the album'scover art. CoverArtLarge A larger graphic of the album's cover art.

AlbumPlaylist Object Property Name Description Name The name of thealbum play list. Copyright Copyright information for the album. LabelThe recording company label that produces the album. ReleaseDate Thedate of release of the album. Rating A rating for the album. Style Thestyle of the content in the play list. CDID A hashed value of the discidentifier, allowing for faster lookups. TOC The disc identifier (basedon the table of contents information) for the album. LastPlayed The lasttime a track in the play list was played on the computer. Artist Theartist of the album. Genre The genre or category of the album. ParentThe parent of the object. LastPlaylistEntryID The ID of the last entryin the play list. LastEditedBy The user that last edited the play list.Composer The composer of the album. TotalDuration The total play time ofthe content on the play list. BuyNow Information on how to purchase thealbum. MoreInfo A URL to a web page with more information about theobject.

PlaylistProperties Object Property Name Description Name The name of theplay list. NumMediaChildren The total number of children of the objectthat are media content. NumAudioMediaChildren The total number ofchildren of the object that are audio media content.NumVideoMediaChildren The total number of children of the object thatare video media content. LastPlaylistEntryID The ID of the last entry inthe play list. Attributes A set of one or more flags that specifydifferent play list attributes, such as a “deleted” indicating the playlist is marked for deletion. CreationTime The time the play list wascreated. LastModifiedTime The last time the play list was modified.TotalDuration The total playtime of content on the play list. Author Theauthor of the play list. Genre The genre or category of content on theplay list. Copyright Copyright information for the content on the playlist.

PlaylistFromAlbum Object Property Name Description Name The name of theplay list.

Track Object Property Name Description Filename The filename of thetrack on the hard drive. Title The title of the track. Subtitle Subtitleinformation for the track. Copyright Copyright information for thetrack. FileType Type of file (e.g., MP3 or WMA). Time The time the filewas created. Date The date the file was created. Language The languagethe content of the track is in. MediaType The type of media the track ison. PartInSet Indicates which part of a set the track is on (e.g., whichdisc of a multiple-disc set). EncodedBy Name of the person who rippedthe track. Publisher The publisher of the media the track is on.TrackNumber The number of the track on the media. RecordingDates Therecording date(s) of the track. NetRadioStation The name of anInternet-accessible radio station where the track is received from.NetRadioOwner The owner of an Internet-accessible radio station wherethe track is received from. Year Year of original recording of thetrack. BeatsPerMinute The number of beats per minute in the content ofthe track. MusicalKey The musical key the content of the track is in.LengthInMilliseconds The length of the track (in milliseconds). AlbumThe album the track is on. OriginalAlbum Name of album the track firstappeared on. OriginalFilename First filename of the track (same as theFilename if it has not been renamed since created). OriginalReleaseYearThe year the track was original released in. FileOwner Name of personwith rights to this file. Size The size (e.g., in frames) of the trackon the media. ISRC The International Standard Recording Code. SoftwareName of the software that ripped the track. Rating A rating for thetrack. Comment Comments regarding the track. CDID A hashed value of thedisc identifier, allowing for faster lookups. TOC The disc identifier(based on the table of contents information) for the media storing thetrack. Genre The genre or category of the track. Ripped Whether thetrack has been ripped to a file. OriginalIndex The position on the albumthat the track appeared on. LastEditedBy An identification of the lastentity (either the name of the meta data provider or “user”) to edit anyproperty associated with the object. MediaTypeId An identifier of themedia type the track is on. Attributes A set of one or more flags thatspecify different play list attributes, such as a “deleted” indicatingthe play list is marked for deletion. PlayCount The number of times thetrack has been played. Bitrate The encoding rate of the file. ProtectedFlag indicating whether digital rights management (DRM) is used on thefile. CreationTime The time the file was first added to the database.LastModifiedTime The last time any attribute of the track was changed inthe database. Composer The composer of the track. CoverArtSmall A smallgraphic of the cover art of the media including the track. CoverArtLargeA larger graphic of the cover art of the media including the track.TrackedFilename An identifier of the file in the file system of theoperating system using the database, allowing the file to be searched ifit is not accessible by filename. Lyrics The lyrics for the content ofthe track.

Batch Object Property Name Description CDID A hashed value of a discidentifier, allowing for faster lookups. NumTracks A number of tracks onthe disc. TOC A disc identifier.

Link Object Property Name Description Name Friendly display name of alink. URL URL of the linked content.

Picture Object Property Name Description Caption A text description fora picture. URL A uniform resource locator of where the picture islocated. TrackedLink An identifier of the picture in the file system ofthe operating system using the database, allowing the file to besearched if it is not accessible by filename. Thumbnail A thumbnailimage for the picture.

CustomData Object Property Name Description Name The name of the object.NumericValue A numerical value for the object. TextValue A text valuefor the object. DateValue A date value for the object. BinaryValue Abinary value for the object. UnicodeTextValue A unicode text value forthe object.

ChildListEntry Object Property Name Description ObjectType GUID of theobject type for the object. ObjectInstanceID Actual ID of the object.ListPosition Position of the media object in the play list.ListInstanceID Instance ID of the media object in the play list object.

DVD Object Property Name Description Title The title of the DVD. GenreThe genre or category of the content on the DVD. Director The directorof the content on the DVD. ReleasedBy The entity that released the DVD.ProducedBy The producer of the content on the DVD. Studio The studiothat owns the content on the DVD. Duration The total playback time ofthe content on the DVD (or a portion of the content, such as a movie).Rating The rating of the content on the DVD. RatingOrg The organizationthat gave the rating for the content. Copyright Copyright informationfor the content on the DVD. Comment Comments regarding the DVD.ReleaseDate The release date of the DVD. URL Locator (URL) of the DVDfor rendering. ID DVD identifier generated from a CRC 64 of portions ofthe DVD content. LeadPerformers The names of the lead performers in thecontent on the DVD. BuyNow Information on how to purchase the DVD.MoreInfo A URL to a web page with more information about the DVD.CoverArtSmall A small graphic of the cover art of the DVD. CoverArtLargeA larger graphic of the cover art of the DVD. MPAARating A ratingassigned by the Motion Picture Association of America (MPAA) to thecontent of the DVD.

DVDTitle Object Property Name Description Name The name of the title(the primary content) of a DVD. Genre The genre or category of thetitle. Director The director of the title. ReleasedBy The entity thatreleased the title. ProducedBy The producer of the title. Studio Thestudio that owns the title. Duration The total playback time of thetitle. Rating The rating of the title. RatingOrg The organization thatgave the title the rating. Copyright Copyright information for thetitle. Comment Comments regarding the title. ReleaseDate The releasedate of the title. LeadPerformers The names of the lead performers inthe title. MPAARating A rating assigned by the Motion PictureAssociation of America (MPAA) to the title. ID DVD identifier generatedfrom a CRC 64 of portions of the DVD content.

DVDChapter Object Property Name Description Name The name of a chapteron a DVD. Genre The genre or category of the chapter. Director Thedirector of the chapter. ReleasedBy The entity that released thechapter. ProducedBy The producer of the chapter. Studio The studio thatowns the chapter. Duration The total playback time of the chapter.Rating The rating of the chapter. RatingOrg The organization that gavethe chapter the rating. Copyright Copyright information for the chapter.Comment Comments regarding the chapter. ReleaseDate The release date ofthe chapter. LeadPerformers The names of the lead performers in thechapter. MPAA Rating A rating assigned by the Motion Picture Associationof America (MPAA) to the chapter. ID DVD identifier generated from a CRC64 of portions of the DVD content.

Factoid Object Property Name Description Fact The content (e.g., fact orcomment) of the factoid.

FIG. 5 is a flowchart illustrating an exemplary process for renderingmedia content meta data. The process of FIG. 5 is carried out by metadata manager 124 of FIG. 1, and may be implemented in software. Theprocess of FIG. 5 is discussed with reference to a CD, although othertypes of media may alternatively be used.

Initially, a disc is inserted to the computer (act 240). The disc isthen scanned for its table of contents information (act 242) and a discidentifier generated based on the table of contents information (act244).

A database lookup is then performed based on the disc identifier (act246), to determine whether the disc identifier exists in the database.In the example of FIG. 3, this can be accomplished by checking the valuefor each entry in properties table 206 that has a property ID for a discidentifier. If any of the values are the same as the generated discidentifier, then the disc identifier already exists in the database;otherwise, the disc identifier does not already exist in the database.The result of this lookup is then used to determine the appropriatecourse of action (act 248).

If the disc identifier is in the database, then the meta datacorresponding to the disc identifier is obtained from the database (act250) and rendered, or otherwise made available, to the user (act 252).Returning to act 248, if the disc identifier is not in the database,then a database representation is created for the disc (act 254). Thisdatabase representation includes the data that will be placed in thetree structure (e.g., the disc identifier and an indication of eachtrack on the disc). The database representation is then converted intotree form (act 256), with the disc identifier as the root node and achild node for each track on the disc. The unknown meta data for eachnode object is initially identified as “unknown” (some meta data, suchas disc identifier, is known and can be stored in the database). Aremote server is then queried for the disc meta data (act 258). In theillustrated example, this querying is performed by communicating thedisc identifier to a remote server(s), which in turn accesses the metadata it stores for any meta data corresponding to the disc identifier,and returns that meta data to the requesting computer. Processing thencontinues with walking the tree in order, updating any changed meta data(act 260) to replace the values of “unknown” with the values receivedfrom the server, and rendering the meta data (act 252).

It should be noted that the remote server may not always be accessible.For example, the client 102 of FIG. 1 may not always be coupled tonetwork 108 (e.g., the Internet), and thus not be able to access servers104 and 106. In these situations, meta data manager 124 keeps the valuesof “unknown” for the unknown meta data and then accesses server 104 or106 when the client is coupled to network 108. At this point, the metadata is obtained from servers 104 and/or 106, and the local meta datastore updated appropriately. In one implementation, meta data manager124 maintains a separate record (e.g., in a separate file) of discidentifiers for CDs that were added to the database when servers 104 and106 were not accessible to client 102. Thus, meta data manager 124 canreadily ascertain which meta data it needs from servers 104 and 106.Alternatively, no such separate record may be maintained, and thedatabase may be searched to identify “unknown” values and determine,based on the tree structure, which disc identifiers correspond to theneeded meta data.

FIG. 6 is a flowchart illustrating an exemplary process for updatingmedia content meta data. The process of FIG. 6 is carried out by metadata manager 124 of FIG. 1, and may be implemented in software.

Initially, a user request to change the meta data is received (act 280),which includes an indication of the change the user would like to make(for example, what new data the user would like to add). The root objectcorresponding to the meta data change is then identified (act 282), andselected as the initial object for analysis (act 284). A determinationis then made as to whether the selected object is affected by therequest (act 286). An object is affect by the request if the object hasmeta data associated with it that corresponds to the user's request. Forexample, the root disc object may have be affected if the user requeststo change the artist name of a CD, but not if the user requests tochange the title of a track on the CD.

If the selected object is affected by the request, then the meta dataassociated with the selected object is updated based on the request (act288). In one implementation, this updating comprises overwritingprevious meta data with the meta data received as part of the userrequest. A check is then made as to whether any additional objects areto be analyzed (act 290). In one implementation, file manager 124analyzes every object in the tree to determine whether it is affected bythe request. If there are one or more additional objects to analyze,then one of the additional objects is selected (act 292) and the processreturns to act 286. However, if there are no more objects to analyze,then the updating process ends (act 294).

The following example illustrates the process of updating media contentdata of FIG. 6. Assume that a user changes the title for a song (track)on a CD that is represented by track object 154 of FIG. 2. Meta datamanager 124 begins with disc object 150 and does not change any metadata associated with disc object 150. However, track object 154 isaffected by the user's requested change, so the title meta dataassociated with track object 154 is changed to identify the new title.Similarly, each of local file objects 160 and 162 are affected by theuser's requested change, so the title meta data associated with each offile objects 160 and 162 are changed to identify the new title.

FIG. 7 is a flowchart illustrating an exemplary process for generatingmeta data for new media. The process of FIG. 7 is carried out by metadata manager 124 of FIG. 1, and may be implemented in software. Theprocess of FIG. 7 is discussed with reference to a CD, although othertypes of media may alternatively be used.

Many commonly-available computer systems allow a user to generate his orher own media having whatever content he or she desires. For example, adevice commonly referred to as a CDROM burner allows a user to createhis or her own CDs with audio tracks of his or her choosing. Thiscreated CD can then be played in virtually any conventional CD drive.However, because the CD is a user-created CD, even though it may becreated based on tracks from other publicly available CDs, it's table ofcontents and thus its disc identifier will be different, and remoteservers will not have meta data for the CD.

Meta data manager 124 solves this problem by communicating with themodule that is managing the creation of the new CD (e.g., content player122). The module managing creation of the new CD knows the identity ofthe tracks being stored on the new CD. Meta data manager 124 uses thistrack identification information to access the local meta data store andcreate new meta data. This process is illustrated in FIG. 7.

Initially, a notification of a newly created disc is received (act 300).The module managing creation of the new disc notifies meta data manager124 that the new disc is being created. Once the new disc is created,meta data manager 124 accesses the table of contents information for thenew disc (act 302). A disc identifier is then generated based on thetable of contents information (act 304), analogous to act 244 of FIG. 5.

A new root node is then created for the new disc in the local meta datastore (act 306). New children nodes are also created (act 308) based onthe contents of the disc. For each child (track) node, the manager 124accesses the meta data for the track stored in the database form thesource of that track (act 310). In this situation, the source of thetrack refers to the track (or file) that the user identifies as being atrack that should be stored on the new CD. This meta data is then storedfor the new disc (act 312).

It should be noted that, when creating a new CD, the tracks stored onthe new CD may optionally be associated with the source. In oneimplementation, this is accomplished by identifying each track on thenew CD as a child of the original file or track. For example, if a usercreates a new CD by copying a track from a previous CD X, then a new CDroot node and track node for the new track are created as discussedabove. Furthermore, the track for the new CD is identified in thedatabase as a child of the track on CD X, so any subsequent changes tothe meta data for that track on CD X are propagated to the meta data forthe new track.

FIG. 8 illustrates a more general exemplary computer environment 400,which can be used to implement the improved meta data managementdescribed herein. The computer environment 400 is only one example of acomputing environment and is not intended to suggest any limitation asto the scope of use or functionality of the computer and networkarchitectures. Neither should the computer environment 400 beinterpreted as having any dependency or requirement relating to any oneor combination of components illustrated in the exemplary computerenvironment 400.

Computer environment 400 includes a general-purpose computing device inthe form of a computer 402. Computer 402 can be, for example, any ofcomputing devices 102, 104, or 106 of FIG. 1. The components of computer402 can include, but are not limited to, one or more processors orprocessing units 404, a system memory 406, and a system bus 408 thatcouples various system components including the processor 404 to thesystem memory 406.

The system bus 408 represents one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. By way of example, sucharchitectures can include an Industry Standard Architecture (ISA) bus, aMicro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, aVideo Electronics Standards Association (VESA) local bus, and aPeripheral Component Interconnects (PCI) bus also known as a Mezzaninebus.

Computer 402 typically includes a variety of computer readable media.Such media can be any available media that is accessible by computer 402and includes both volatile and non-volatile media, removable andnon-removable media.

The system memory 406 includes computer readable media in the form ofvolatile memory, such as random access memory (RAM) 410, and/ornon-volatile memory, such as read only memory (ROM) 412. A basicinput/output system (BIOS) 414, containing the basic routines that helpto transfer information between elements within computer 402, such asduring start-up, is stored in ROM 412. RAM 410 typically contains dataand/or program modules that are immediately accessible to and/orpresently operated on by the processing unit 404.

Computer 402 may also include other removable/non-removable,volatile/non-volatile computer storage media. By way of example, FIG. 8illustrates a hard disk drive 416 for reading from and writing to anon-removable, non-volatile magnetic media (not shown), a magnetic diskdrive 418 for reading from and writing to a removable, non-volatilemagnetic disk 420 (e.g., a “floppy disk”), and an optical disc drive 422for reading from and/or writing to a removable, non-volatile opticaldisc 424 such as a CD-ROM, DVD-ROM, or other optical media. The harddisk drive 416, magnetic disk drive 418, and optical disc drive 422 areeach connected to the system bus 408 by one or more data mediainterfaces 426. Alternatively, the hard disk drive 416, magnetic diskdrive 418, and optical disc drive 422 can be connected to the system bus408 by one or more interfaces (not shown).

The various drives and their associated computer-readable media providenon-volatile storage of computer readable instructions, data structures,program modules, and other data for computer 402. Although the exampleillustrates a hard disk 416, a removable magnetic disk 420, and aremovable optical disc 424, it is to be appreciated that other types ofcomputer readable media which can store data that is accessible by acomputer, such as magnetic cassettes or other magnetic storage devices,flash memory cards, CD-ROM, digital versatile discs (DVD) or otheroptical storage, random access memories (RAM), read only memories (ROM),electrically erasable programmable read-only memory (EEPROM), and thelike, can also be utilized to implement the exemplary computing systemand environment.

Any number of program modules can be stored on the hard disk 416,magnetic disk 420, optical disc 424, ROM 412, and/or RAM 410, includingby way of example, an operating system 426, one or more applicationprograms 428, other program modules 430, and program data 432. Each ofsuch operating system 426, one or more application programs 428, otherprogram modules 430, and program data 432 (or some combination thereof)may implement all or part of the resident components that support thedistributed file system.

A user can enter commands and information into computer 402 via inputdevices such as a keyboard 434 and a pointing device 436 (e.g., a“mouse”). Other input devices 438 (not shown specifically) may include amicrophone, joystick, game pad, satellite dish, serial port, scanner,and/or the like. These and other input devices are connected to theprocessing unit 404 via input/output interfaces 440 that are coupled tothe system bus 408, but may be connected by other interface and busstructures, such as a parallel port, game port, or a universal serialbus (USB).

A monitor 442 or other type of display device can also be connected tothe system bus 408 via an interface, such as a video adapter 444. Inaddition to the monitor 442, other output peripheral devices can includecomponents such as speakers (not shown) and a printer 446 which can beconnected to computer 402 via the input/output interfaces 440.

Computer 402 can operate in a networked environment using logicalconnections to one or more remote computers, such as a remote computingdevice 448. By way of example, the remote computing device 448 can be apersonal computer, portable computer, a server, a router, a networkcomputer, a peer device or other common network node, and the like. Theremote computing device 448 is illustrated as a portable computer thatcan include many or all of the elements and features described hereinrelative to computer 402.

Logical connections between computer 402 and the remote computer 448 aredepicted as a local area network (LAN) 450 and a general wide areanetwork (WAN) 452. Such networking environments are commonplace inoffices, enterprise-wide computer networks, intranets, and the Internet.

When implemented in a LAN networking environment, the computer 402 isconnected to a local network 450 via a network interface or adapter 454.When implemented in a WAN networking environment, the computer 402typically includes a modem 456 or other means for establishingcommunications over the wide network 452. The modem 456, which can beinternal or external to computer 402, can be connected to the system bus408 via the input/output interfaces 440 or other appropriate mechanisms.It is to be appreciated that the illustrated network connections areexemplary and that other means of establishing communication link(s)between the computers 402 and 448 can be employed.

In a networked environment, such as that illustrated with computingenvironment 400, program modules depicted relative to the computer 402,or portions thereof, may be stored in a remote memory storage device. Byway of example, remote application programs 458 reside on a memorydevice of remote computer 448. For purposes of illustration, applicationprograms and other executable program components such as the operatingsystem are illustrated herein as discrete blocks, although it isrecognized that such programs and components reside at various times indifferent storage components of the computing device 402, and areexecuted by the data processor(s) of the computer.

Computer 402 typically includes at least some form of computer readablemedia. Computer readable media can be any available media that can beaccessed by computer 402. By way of example, and not limitation,computer readable media may comprise computer storage media andcommunication media. Computer storage media includes volatile andnonvolatile, removable and non-removable media implemented in any methodor technology for storage of information such as computer readableinstructions, data structures, program modules or other data. Computerstorage media includes, but is not limited to, RAM, ROM, EEPROM, flashmemory or other memory technology, CD-ROM, digital versatile discs (DVD)or other optical storage, magnetic cassettes, magnetic tape, magneticdisk storage or other magnetic storage devices, or any other media whichcan be used to store the desired information and which can be accessedby computer 402. Communication media typically embodies computerreadable instructions, data structures, program modules or other data ina modulated data signal such as a carrier wave or other transportmechanism and includes any information delivery media. The term“modulated data signal” means a signal that has one or more of itscharacteristics set or changed in such a manner as to encode informationin the signal. By way of example, and not limitation, communicationmedia includes wired media such as wired network or direct-wiredconnection, and wireless media such as acoustic, RF, infrared and otherwireless media. Combinations of any of the above should also be includedwithin the scope of computer readable media.

The invention has been described herein in part in the general contextof computer-executable instructions, such as program modules, executedby one or more computers or other devices. Generally, program modulesinclude routines, programs, objects, components, data structures, etc.that perform particular tasks or implement particular abstract datatypes. Typically the functionality of the program modules may becombined or distributed as desired in various embodiments.

For purposes of illustration, programs and other executable programcomponents such as the operating system are illustrated herein asdiscrete blocks, although it is recognized that such programs andcomponents reside at various times in different storage components ofthe computer, and are executed by the data processor(s) of the computer.

Alternatively, the invention may be implemented in hardware or acombination of hardware, software, and/or firmware. For example, one ormore application specific integrated circuits (ASICs) could be designedor programmed to carry out the invention.

CONCLUSION

Although the description above uses language that is specific tostructural features and/or methodological acts, it is to be understoodthat the invention defined in the appended claims is not limited to thespecific features or acts described. Rather, the specific features andacts are disclosed as exemplary forms of implementing the invention.

1. A method comprising: maintaining meta data associated with aplurality of pieces of content stored on a plurality of pieces of media;maintaining meta data associated with another plurality of pieces ofcontent, wherein each of the other plurality of pieces of content is aripped version of a respective one of the plurality of pieces of contentin the corresponding one of the plurality of pieces of content; andaltering the meta data associated with one of the other plurality ofpieces of content in response to the meta data associated with thecorresponding one of the plurality of pieces of content being altered.2. A method as recited in claim 1, wherein each of the plurality ofpieces of content is a track of a compact disc (CD).
 3. A method asrecited in claim 1, wherein each of the other plurality of pieces ofcontent is stored on a local hard drive.
 4. A method as recited in claim1, further comprising: maintaining a set of disc identifiers; for eachdisc identifier, maintaining a set of children objects, wherein each ofthe children objects corresponds to one of the plurality of pieces ofcontent; and for each of one or more of the individual children objects,maintaining a set of additional objects, wherein each additional objectcorresponds to one of the other plurality of pieces of content.
 5. Oneor more computer-readable memories containing a computer program that isexecutable by a processor to perform acts of: maintaining meta dataassociated with a plurality of pieces of content stored on a pluralityof pieces of media; maintaining meta data associated with anotherplurality of pieces of content, wherein each of the other plurality ofpieces of content is a ripped version of a respective one of theplurality of pieces of content in the corresponding one of the pluralityof pieces of content; and altering the meta data associated with one ofthe other plurality of pieces of content in response to the meta dataassociated with the corresponding one of the plurality of pieces ofcontent being altered.
 6. One or more computer-readable storage mediahaving stored thereon a plurality of instructions that, when executed byone or more processors of a computer, causes the one or more processorsto perform the following acts: receiving an identification of a changeto be made to meta data corresponding to a particular piece of contenton a particular piece of media; changing, based on the identification,meta data corresponding to the particular piece of content; identifyingone or more other pieces of content associated with the particular pieceof content, wherein the other pieces of content are ripped versions ofthe particular piece of content; and changing, based on theidentification, meta data corresponding to the one or more other piecesof content.
 7. One or more computer-readable storage media as recited inclaim 6, wherein the particular piece of content on the particular pieceof media comprises a particular song on a particular compact disc (CD).8. One or more computer-readable storage media as recited in claim 6,wherein the identification includes new meta data and wherein changingthe meta data corresponding to the particular piece of content comprisesoverwriting any previous meta data corresponding to the particular pieceof content with the new meta data.
 9. One or more computer-readablestorage media as recited in claim 6, wherein the particular piece ofcontent comprises an audio track and wherein the other pieces of contentcomprise different versions of the audio track.
 10. One or morecomputer-readable storage media as recited in claim 6, wherein originalmeta data associated with the particular piece of content comprises metadata received from a remote server, and wherein the change to be made tothe meta data corresponding to the particular piece of content comprisesnew meta data received from a user.
 11. One or more computer-readablestorage media as recited in claim 6, wherein the plurality ofinstructions further causes the one or more processors to perform thefollowing acts: maintaining an indication of a source of the change tothe meta data corresponding to the particular piece of content;maintaining an indication of a source of the change to the meta datacorresponding to each of the one or more other pieces of content;receiving an identification of another change to be made to meta datacorresponding to the particular piece of content; checking whether thesource of the change to the meta data corresponding to the particularpiece of content was a user; changing, based on the identification ofthe other change, meta data corresponding to the particular piece ofcontent if the source of the change to the meta data corresponding tothe particular piece of content was the user; checking whether thesource of the change to the meta data corresponding to the one or moreother pieces of contents was the user; and changing, based on theidentification of the other change, meta data corresponding to the oneor more other pieces of content if the source of the change to the metadata corresponding to the one or more other pieces of contents was theuser.